package Controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import Modelo.Terminal;
import Modelo.Unidad;
import Modelo.Cooperativa;
import Modelo.TipoUnidad;
import Vista.VTipoUnidad;
@SuppressWarnings("all")
public class CTipoUnidad implements ActionListener{

	private VTipoUnidad vtu;
	private Cooperativa co;

	private TipoUnidad tu;
	private Terminal ter;
	private CCooperativa controladorcooperativa;
	
	public CTipoUnidad(Cooperativa co, Terminal ter, CCooperativa controladorcooperativa){
		super();
		this.vtu = new VTipoUnidad(this);
		this.co = co;
		this.ter = ter;
		this.controladorcooperativa = controladorcooperativa;
		this.vtu.setVisible(true);
		DefinirCooperativa();
		vtu.getTxtCooperativa().setVisible(false);
		vtu.limpiarTabla();
		llenarTabla();
		
	}
	
	private void DefinirCooperativa() {
		vtu.getTxtCooperativa().setText(co.getCodigo().toString());
		
	}

	//Metodos Para accionar los botones
	@Override
	public void actionPerformed(ActionEvent e) {
	      if(e.getActionCommand().toLowerCase().equals("modificar"))
	      {
	    	  		Modificar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("guardar"))
	      {
	    	  		Guardar();
	      }else if(e.getActionCommand().toLowerCase().equals("limpiar"))
	      {
	    	  Limpiar();
	      }else if(e.getActionCommand().toLowerCase().equals("eliminar"))
	      {
	    	  Eliminar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("buscar")){
	    	  Buscar();
	      }
	      
	}
	
	public void AgregarArchivoTipoUnidad(String codigo, String descripcion, String cooperativa){
		
		TipoUnidad tp = new TipoUnidad();
		tp.setCodigo(codigo);
		tp.setDescripcion(descripcion);
		tp.setCooperativa(cooperativa);
		co.agregarTipoUnidad(tp);
		
	}
	
	public void Guardar(){
		
		//Se crea un objeto tipo de pago
			if(validarDatos()){
				TipoUnidad tu = new TipoUnidad();
				tu.setCodigo(this.vtu.getTxtCodigo().getText().toString());
				tu.setDescripcion(this.vtu.getTxtDescripcion().getText().toString());
				tu.setCooperativa(this.vtu.getTxtCooperativa().getText().toString());
				co.agregarTipoUnidad(tu);
				JOptionPane.showMessageDialog(null, "Registro Tipo Unidad Exitoso", "Guardar Tipo Unidad", 1);
				vtu.getTxtCodigo().setText("");
				vtu.getTxtDescripcion().setText("");
				vtu.limpiarTabla();
				llenarTabla();
				
			}
		}
		
		//metodo para eliminar un tipo de pago existente
		
		public void Eliminar(){
			
		
			
		}
		
		//metodo para modificar un tipo de pago existente
		
		public void Modificar(){
			
			
		}
		
		//metodo para buscar un tipo de pago
		public void Buscar(){
			

			TipoUnidad tipounidadbuscado;
			if((vtu.getTxtCodigo().getText().equals(""))){
				vtu.mostrarMensaje("Debe llenar el campo codigo para poder buscar");		
			}else if(vtu.getTxtCodigo().getText().toString() != "")
			{
				String codigo = vtu.getTxtCodigo().getText().toString();
				
				
			
				if( co.buscarTipoUnidad(codigo) == null){
					vtu.mostrarMensajeError("El Tipo de unidad con codigo " + codigo + " no existe" );
				}else
				 {
					tipounidadbuscado = co.buscarTipoUnidad(codigo);
					vtu.getTxtCodigo().setEnabled(false);
					vtu.getTxtDescripcion().setText(tipounidadbuscado.getDescripcion().toString());
					vtu.getTxtCooperativa().setText(tipounidadbuscado.getCooperativa().toString());
					vtu.getTxtDescripcion().setEnabled(false);
					vtu.getBtnGuardar().setEnabled(false);
					vtu.getBtnBuscar().setEnabled(false);
			
				}
				
				

			}
		}
		
		//metodo para limpiar los campos de texto
		
		public boolean validarDatos(){
			if(vtu.getTxtCodigo().getText().toString().equalsIgnoreCase("")){
				vtu.mostrarMensaje("Debe ingresar un codigo de Tipo de Unidad");
				return false;
			}else if (vtu.getTxtDescripcion().getText().toString().equalsIgnoreCase("")){
				vtu.mostrarMensaje("Debe ingresar una descripcion de Tipo de Unidad");
				return false;
			}else if (vtu.getTxtCooperativa().getText().toString().equalsIgnoreCase("")){
				vtu.mostrarMensaje("Debe ingresar una codigo de cooperativa del Tipo de Unidad");
				return false;
			}else if(co.buscarTipoUnidad(vtu.getTxtCodigo().getText().toString()) != null){
				vtu.mostrarMensaje("Ya el tipo de unidad con el codigo " + vtu.getTxtCodigo().getText().toString() + " existe");
				return false;
			}
			
			return true; //en caso de que esten llenos los campos
			
		}
		
		public void Limpiar(){
			
			//pone los campos de texto en blanco
			vtu.getTxtCodigo().setText("");
			vtu.getTxtDescripcion().setText("");
			vtu.getTxtCooperativa().setText("");
			
			//habilita todos los botones
			vtu.getBtnBuscar().setEnabled(true);
			vtu.getBtnEliminar().setEnabled(true);
			vtu.getBtnModificar().setEnabled(true);
			vtu.getBtnGuardar().setEnabled(true);
			
			//habilita todos los campos de texto
			
			vtu.getTxtCodigo().setEnabled(true);
			vtu.getTxtDescripcion().setEnabled(true);
		
		}
		
		public void llenarTabla() {
			

			

			for (int k = 0; k < co.contarTiposUnidad(); k++) {
					
					if(co.obtenerTipoUnidad(k).getCooperativa().equals(co.getCodigo()))
					{
						Vector<String> datos = new Vector<String>(2, 1);
						
						
						String codigo = co.obtenerTipoUnidad(k).getCodigo();
						String descripcion = co.obtenerTipoUnidad(k).getDescripcion();
		
						datos.add(codigo);
						datos.add(descripcion);
						vtu.agregarFilaTblTipoPago(datos);
					
					}
						
					
			}
		}
	
	
}
